package service

import (
	"gitee.com/gopher2011/mall/app/dao"
)

// 全局公开对象
var PmsProductAttribute = pmsProductAttributeService{}

// 私有对象，所有的方法都绑定到这个结构体上。

type pmsProductAttributeService struct{}

func (p *pmsProductAttributeService) Create(arg dao.PmsProductAttribute) (int64, error) {
	res, err := dao.PmsProductAttributeDao.InsertTemplate(arg)
	if err != nil {
		return 0, err
	}
	l, err := dao.PmsProductAttributeCategoryDao.SelectTemplate(arg.ProductAttributeCategoryId)
	if err != nil {
		return l.Id, err
	}
	//新增商品属性以后需要更新商品属性分类数量
	if arg.Types == 0 {
		l.AttributeCount = l.AttributeCount + 1
	} else if arg.Types == 1 {
		l.ParamCount = l.ParamCount + 1
	}
	res, err = dao.PmsProductAttributeCategoryDao.UpdateTemplate(l)
	if err != nil {
		return 0, err
	}
	return res, nil
}

func (p *pmsProductAttributeService) Delete(ids []int64) (int64, error) {
	return dao.PmsProductAttributeDao.DeleteTemplate(ids)
}

func (p *pmsProductAttributeService) Update(id int64, arg dao.PmsProductAttribute) (int64, error) {
	arg.Id = id
	return dao.PmsProductAttributeDao.UpdateTemplate(arg)
}

func (p *pmsProductAttributeService) GetItem(id int) (dao.PmsProductAttribute, error) {
	return dao.PmsProductAttributeDao.SelectTemplate(int64(id))
}

func (p *pmsProductAttributeService) List(arg dao.PmsProductAttributeList) ([]dao.PmsProductAttribute, error) {
	return dao.PmsProductAttributeDao.List(arg)
}

func (p *pmsProductAttributeService) GetProductAttrInfo(productCategoryId int64) (dao.ProductAttrInfo, error) {
	return dao.PmsProductAttributeDao.GetProductAttrInfo(productCategoryId)
}
